KingBase Python 运维脚本 自动重启kingbase 数据库
远程检查kingbase 服务器并启动kingbase 数据库。
# 此脚本可以远程连接Linux 服务器。并执行操作。
# 使要导入paramiko,用pip3 install paramiko 命令安装扩展包,
# python 版本为3.9 以上。
import paramiko
# ssh连接配置信息
hostname = "192.168.10.158"
host_port = 22
username = "kingbase"
password = "kingbase"
server_dir = "/KingbaseES/V8/Server/bin"
datadir = "/data"
# 准备命令
sys_ctl_status = f"source ~/.bash_profile;sys_ctl status -D {datadir}"
sys_ctl_start = f"source ~/.bash_profile;sys_ctl start -D {datadir} -l log"
# 创建ssh连接
ssh_client = paramiko.SSHClient()
# 第一次SSH 连接时确认信息。
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
# 创建连接
ssh_client.connect(hostname=hostname, port=host_port, username=username, password=password)
# 检查kingbase 服务状态函数
def kingbase_check():
""""检查kingbase server 状态。"""
stdin, stdout, stderr = ssh_client.exec_command(sys_ctl_status)
stdout_info = str(stdout.read().decode('utf-8'))
return stdout_info
# 启动kingbase 服务
def kingbase_startup():
""""检查kingbase server 状态。"""
stdin, stdout, stderr = ssh_client.exec_command(sys_ctl_start)
stdout_info = str(stdout.read().decode('utf-8'))
return stdout_info
# main 主进程。
stdout_info = kingbase_check()
if "PID:" in stdout_info:
""" 如果进程ID 存在,数据库进程状态为启动状态。"""
print(f"PROMOTE:Server is running. ")
stdout_info = kingbase_check()
""" 打印数据库状态信息。"""
print(f"{stdout_info}")
else:
""" 如果进程ID 不存在,数据库进程为停止状态。"""
print("PROMOTE:server is not runing, We will startup databaes")
""" 启动kingbase 数据库。"""
stdout_info = kingbase_startup()
""" 打印启动信息。"""
print(f"{stdout_info}")
# 关闭ssh 连接
ssh_client.close()